#!/user/bin/env python
# -*- coding: UTF-8 -*-
# author:ZLP
# Create Time:2023.5.30
# Content:用于软件启动前的初始化，如配置文件的设置、通行证的登录、打开软件
"""
该文件用于 初始化软件所需要的操作
"""
import os
import time
import uiautomation as auto
from utils.read_config import readconfig
from common import soft_db
from utils.utils_log import loggerCase
from utils.utils_operation import run_time
from utils.utils_operation import cal_ratio

# 1、使用批处理命令关闭软件，相等于直接杀进程
# 2、参数app_name是exe的名称，不输入则默认为FreeScan.exe
def close_app_kill():
    """
    关闭软件
    :return:
    """
    # EXStar.exe
    os.system(r'taskkill /F /IM "FreeScan Omni.exe"')
    # 把其他的相关进程杀一遍
    os.system("taskkill /F /IM SnSyncService.exe")
    os.system("taskkill /F /IM Shining3DUserAccount.exe")
    loggerCase.info("已kill相关进程")
    time.sleep(1)


# 需要再写一个前提的函数
# 1、前提当前无软件打开；
# 2、参数是路径+exe名称，如果是默认路径可以不写参数，路径中\和/都可以
# 3、执行打开软件前，可以先执行下close_app_kill函数，把所有的进程都杀死
# 如：app=C:\Shining3d\FreeScan\FreeSan.exe,其中\或/都可以
#@run_time
# def launch_app():
#     """
#     启动软件
#     :return:
#     """
#     app = readconfig.launch_app
#     loggerCase.info("app路径："+app)
#     try:
#         app_path, app_name = app.rsplit("\\", 1)
#     except ValueError:
#         app_path, app_name = app.rsplit("/", 1)
#     #os.system(r'start "" /d %s /wait %s' % (app_path, app_name))
#     os.system(r'start "" /d %s /wait "%s"' % (app_path, app_name))  # 注意FreeScan Trak的exe文件名有空格所以要用雙引號括起來，否則無法啟動
#
#
#
#     loggerCase.info("启动软件成功" + app_name)


@run_time
def launch_app():
    app = readconfig.launch_app

    try:
        app_path, app_name = app.rsplit("\\", 1)
    except ValueError:
        app_path, app_name = app.rsplit("/", 1)
    loggerCase.info("软件路径：{0}{1}".format(app_path,app_name))

    #os.system(r'start "" /d %s /wait "%s"' % (app_path, app_name)) # 注意FreeScan Trak的exe文件名有空格所以要用雙引號括起來，否則無法啟動
    #os.system('start "" /d {} /wait "{}"'.format(app_path,app_name))

    print(app_path)
    print("")
    print(app_name)

    os.system(f'start "" /d "{os.path.normpath(app_path)}" /wait "FreeScan Omni.exe"')

    loggerCase.info("启动软件成功 " + app_name)


# def close_all_lanch_popFrame():
#     """
#     关闭所有启动弹框
#     :param driver: pc驱动
#     :return:
#     """
#
#     #关闭离线按钮
#     soft.close_offline()
#
#     #关闭小于15G按钮
#     soft.less_than_15g()


def modify_file_configuration():
    """
    修改文件配置
    :return:
    """
    # common.language_change()
    # soft_db.modify_cali_pic()

    # soft_db.modify_device_type()

    soft_db.modify_scan_pic()




